package com.gl.edificio.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.gl.edificio.domain.Area;
import com.gl.edificio.domain.Piso;
//import com.gl.edificio.service.AreaService;
import com.gl.edificio.service.*;

import com.gl.edificio.dummy.PisoDummy;

public class PisoServiceImpl implements PisoService {

	private PisoDummy pisoDummy = PisoDummy.getInstance();

	private AreaService areaService;

	List<Piso> todosLosPisos;

	public PisoServiceImpl() {

		//this.pisoDummy = new PisoDummy();
		areaService = new AreaServiceImpl();
		todosLosPisos = pisoDummy.getAllPisos();

	}

	@Override
	public int getCantidadBanios(int numPiso) {

		int cantBanios = 0;

		for (Piso piso : todosLosPisos) {
			if (piso.getNumero().intValue() == numPiso) {
				cantBanios = piso.getBanios().intValue();
				break;
			}

		}
		return cantBanios;
	}

	@Override
	public int getCantidadAreas(int numPiso) {

		List<Area> areas;
		areas = getAllAreas(numPiso);

		return areas.size();
	}

	@Override
	public List<Area> getAllAreas(int pisoNum) {

		List<Area> todasAreasPiso = areaService.getAllAreas(pisoNum);

		return todasAreasPiso;
	}

	@Override
	public Area getAreaMasIntegrantes(int pisoNum) {

		int cantidadIntegrantes = 0;
		Area areaConMasIntegrantes = null;

		List<Area> areas = areaService.getAllAreas(pisoNum);

		for (Area area : areas) {
			if (cantidadIntegrantes < areaService.cantidadDeIntegrantes(area
					.getId())) {

				cantidadIntegrantes = areaService.cantidadDeIntegrantes(area
						.getId());
				areaConMasIntegrantes = area;
			}
		}
		return areaConMasIntegrantes;
	}

	@Override
	public List<Piso> getAllPisos(int idEdificio) {

		List<Piso> pisosDelEdificio = new ArrayList<Piso>();

		for (Piso piso : todosLosPisos) {
			if (piso.getIdEdificio() == idEdificio) {
				pisosDelEdificio.add(piso);
			}
		}

		return pisosDelEdificio;
	}

}
